3.5 [Includes] Sections

These sections are optional.

Summary

Defines the [Includes] section tag in the DEC files. This section lists the "standard" include locations, not file names, provided in the package. Each include <PATH> entry listed in a section must be unique to the section (duplicate entries within a section are not permitted).

A path entry listed in an architectural section must not be listed in the common section.

The included path must not end with the <FileSep> character.

All paths must be relative to the directory that contains the DEC file. Use of absolute paths, or WORKSPACE relative paths is prohibited.

It is permissible to use a <MACROVAL> entry in this section provided the above rules are followed.

The 'common' architecture modifier in a section tag must not be combined with other architecture type modifiers; doing so will result in a build break.

Prototype

<Include>      ::= "[Includes" [<com_attribs>] "]" <EOL> <IncEntries>*
<com_attribs>  ::= {<Public>} {<Hidden>}
<Public>       ::= {".common"} {<attribs>}
<Hidden>       ::= {".common.Private"} {<hattribs>}
<attribs>      ::= <attrs> ["," <TS> "Includes" <attrs>]*
<attrs>        ::= "." <arch>
<hattribs>     ::= <hattrs> ["," <TS> "includes" <hattrs>]*
<hattrs>       ::= "." <arch> ".Private"
<IncEntries>   ::= {<MacroDefinition>} {<HdrFile>}
<HdrFile>      ::= <CommentBlock>*
                   <TS> <PATH>
                   {<CommentBlock>} {<EOL>}
<CommentBlock> ::= <TS> "##" <TS> <ModuleTypeList> <CmtOrEol>
<CmtOrEol>     ::= {<Comment>} {<EOL>}

Parameters

PATH

Path statements listed in this section must be relative to the directory that contains the DEC file. Use of "..", "../" or "./" in the directory path is prohibited.

Restrictions

It is NOT permissible to list an include directory under common and under a specific architecture. It is permissible to specify include directory entries under all architectures except "common" if different include directories are required for different architectures.

It is NOT permissible to mix section tags without the Private modifier with section tags with the Private modifier. If this condition is detected, the build tools must terminate with an error message.

For example, [Includes.common, Includes.IA32.Private] is prohibited.

It is NOT permissible for the same include directory to be listed in section tags with and without the Private modifier. If this condition is detected, the build tools must terminate with an error message.

For example, the following is prohibited because the same directory called MyPrivateIncludePath is listed in a tag with and without a Private modifier.

[Includes]
  MyPrivateIncludePath

[Includes.common.Private]
  MyPrivateIncludePath

Example

# Include section - list of Include Paths relative to the DEC file that
# are provided by this package.
# Comments are used for Keywords and Module Types.
#
#######################################################################
[Includes.common]
  Include # Includes for all processor architectures

[Includes.IA32]
  Include/Ia32 # Includes specific to IA32

[Includes.X64]
  Include/X64 # Includes specific to X64

[Includes.IPF]
  Include/Ipf # Includes specific to IA64

[Includes.EBC]
  Include/Ebc # Includes specific to EBC

[Includes.ARM]
  Include/Arm # Includes specific to ARM